//Obtendo caminho do servidro de aplicações com sua respectiva porta.
function obterURLPrincipal(arg)
{
    return "http://" + window.location.host + "/MemoryPriceServerRest/rest" + arg;  
}

function obterURLPrincipalSemRest(arg)
{
    return "http://" + window.location.host + "/MemoryPriceServerRest/" + arg;  
}

function abrirTelaConsultaHistoricoPreco()
{
    window.location = "consulta.html";  
}


function iniciaPagina(funcaoAlvo)
{
    
    $('#labelInicial').html('<h2>@MemoryPrice Web 0.1</h2><br/><hr width=50%/>');
    $('#labelFinal').html('<hr width=50%/><br/><br/><h5>Copyright MemoryPrice 2013, Brazil, São Paulo.</h5>');
    $('#labelInicial').show();
    $('#labelFinal').show();
   
    window[funcaoAlvo](); 
 }


//Função abaixo que grava historico de preco
function gravarPreco()
{
    $.ajax({

        url:  obterURLPrincipal('/Registro/GravarHistoricoPreco'),
        type: 'POST',
        data:
        {
            idSessao:            localStorage.getItem('hiddenTokenAutenticacao'),
            idNomeclaturaLocal:  $('#NomeclaturaLocal').val(),
            idItem:              $('#Item').val(),
            qtd:                 $('#qtd').val(),
            valor:               $('#valor').val()
        },
        success: function (result) 
        {

            if (result.statusRetorno == "1") 
            {
               alert("Preço cadastrado com sucesso!");
            }
            else 
            {
               alert(result.msgRetorno);
            }

        }

    });
}


function validaDadosNomeclaturaLocal()
{
    var retorno  = false;
    
    if($('#labelEnderecoNomeclaturaLocal').val() == "" || $('#descEnderecoNomeclaturaLocal').val() == "")
    {
      retorno = true;  
      alert('Preencha o nome do local antes de enviar.');
    }
    
    if($('#hiddenLatitudeNomeclaturaLocal').val() == "" || $('#hiddenLongitudeNomeclaturaLocal').val() == "")
    {
      retorno = true;
      alert('Procure pelo endereço do local antes de enviar.');
    }
        
    return retorno;
}




function gravarNomeclaturaLocal()
{

    if(validaDadosNomeclaturaLocal())
    {
       return;
    }

    $.ajax({

        url:  obterURLPrincipal('/Registro/GravarLocal'),
        type: 'POST',
        data:
        {
            idSessao:          localStorage.getItem('hiddenTokenAutenticacao'),
            labelEndereco:     $('#labelEnderecoNomeclaturaLocal').val(),
            descEndereco:      $('#descEnderecoNomeclaturaLocal').val(),
            idLatitude:        $('#hiddenLatitudeNomeclaturaLocal').val(),
            idLongitude:       $('#hiddenLongitudeNomeclaturaLocal').val()
        },
        success: function (result) 
        {

            if (result.statusRetorno == "1") 
            {
               alert("Localidade cadastrada com sucesso!");
            }
            else 
            {
               alert(result.msgRetorno);
            }

        }


    });

}



 function gravarUsuario()
{


    $.ajax({

        url:  obterURLPrincipal('/Cadastro/GravarUsuario'),
        type: 'POST',
        data:
        {
            login:         $('#login').val(),
            senha:         $('#senha').val(),
            classe:        $('#classeSocial').val(),
            idTipoItem:    $('#TipoItem').val()
        },
        success: function (result) 
        {

            if (result.statusRetorno == "1") 
            {
               alert("Usuário cadastrado com sucesso!");
            }
            else 
            {
               alert(result.msgRetorno);
            }

        }


    });

}


function consultarHistoricoPrecoPorLocalItem()
{
    $("#sessaoResultadoConsultarHistoricoPreco").hide();
    $("#divHistoricoPreco").empty();
       
    $.ajax({

        url:  obterURLPrincipal('/Consulta/ConsultarHistoricoPrecoPorLocalItem'),
        type: 'GET',
        data:
        {
            idSessao:            localStorage.getItem('hiddenTokenAutenticacao'),
            idNomeclaturaLocal:  $('#NomeclaturaLocal2').val(),
            idItem:              $('#Item').val()          
        },
        success: function (result) 
        {


            if (result.statusRetorno == "1") 
            {
               
                $('#sessaoResultadoConsultarHistoricoPreco').show();
                
                $("#tableResultados").remove();
               
                var tabela = "";
               
                tabela = tabela + "<center><table id='tableResultados'><tr><td>Local</td><td>Item</td><td>Data</td><td>Valor</td><td>Quantidade</td></tr>";
               
                $.each(result.objetoRetorno.listaHistoricoPreco, function (index, objeto) 
                {
                    tabela = tabela + "<tr><td>" +  objeto.nomeclaturaLocal.labelNomeclaturaLocal + "</td><td>"  + objeto.item.descItem + "</td><td>" +  objeto.dataCompraFormatada + "</td><td>" + objeto.valor + "</td><td>" + objeto.quantidade + "<td></td></tr>";
                })

                tabela = tabela + "</table></center>";
                $("#divHistoricoPreco").html(tabela);
                
                //Fins estatisticos
                var estatisticaHtmlAzul = '<br>Sua Média(Local/Item): <b><font color=blue>' + result.objetoRetorno.mediaIndividual + '</b></font>';
                var estatisticaHtmlVermelho = '<br>Sua Média(Local/Item): <b><font color=red>' + result.objetoRetorno.mediaIndividual + '</b></font>';
                
                var estatisticaHtml2 = '<br> Media Global(Geo/Item):' + result.objetoRetorno.mediaColetiva + "<br>";
                
                var htmlFinal = "";
                
                if(result.objetoRetorno.mediaIndividual <= result.objetoRetorno.mediaColetiva)
                {
                    htmlFinal = estatisticaHtmlAzul + estatisticaHtml2;
                }
                else
                {
                    htmlFinal = estatisticaHtmlVermelho + estatisticaHtml2;                    
                }
                
                 
                
                $("#divEstatísticaHistoricoPreco").html(htmlFinal);
                $('#divEstatísticaHistoricoPreco').show();
                
               
            }
            else 
            {
               alert(result.msgRetorno);
            }

        }


    });

}

function consultarHistoricoPrecoPorLocal()
{
    
   
    $("#divHistoricoPreco").empty();
    $("#divEstatísticaHistoricoPreco").empty();
    $("#sessaoResultadoConsultarHistoricoPreco").hide();
       
    $.ajax({

        url:  obterURLPrincipal('/Consulta/ConsultarHistoricoPrecoPorLocal'),
        type: 'GET',
        data:
        {
            idSessao:            localStorage.getItem('hiddenTokenAutenticacao'),
            idNomeclaturaLocal:  $('#NomeclaturaLocal').val()
        },
        success: function (result) 
        {


            if (result.statusRetorno == "1") 
            {
               
                $('#sessaoResultadoConsultarHistoricoPreco').show();
                
                $("#tableResultados").remove();
               
                var tabela = "";
               
                tabela = tabela + "<center><table id='tableResultados'><tr><td>Local</td><td>Item</td><td>Data</td><td>Valor</td><td>Quantidade</td></tr>";
               
                $.each(result.objetoRetorno, function (index, objeto) 
                {
                     tabela = tabela + "<tr><td>" +  objeto.nomeclaturaLocal.labelNomeclaturaLocal + "</td><td>"  + objeto.item.descItem + "</td><td>" +  objeto.dataCompraFormatada  + "</td><td>" + objeto.valor + "</td><td>" + objeto.quantidade + "<td></td></tr>";
                })

                tabela = tabela + "</table></center>";
                $("#divHistoricoPreco").html(tabela);
               
            }
            else 
            {
               alert(result.msgRetorno);
            }

        }


    });

}


function consultarHistoricoPrecoPorItem()
{
    
    $("#divHistoricoPreco").empty();
    $("#divEstatísticaHistoricoPreco").empty();
    $("#sessaoResultadoConsultarHistoricoPreco").hide();
       
    $.ajax({

        url:  obterURLPrincipal('/Consulta/ConsultarHistoricoPrecoPorItem'),
        type: 'GET',
        data:
        {
            idSessao:            localStorage.getItem('hiddenTokenAutenticacao'),
            idItem:              $('#Item2').val()    
        },
        success: function (result) 
        {


            if (result.statusRetorno == "1") 
            {
               
                $('#sessaoResultadoConsultarHistoricoPreco').show();
                
                $("#tableResultados").remove();
               
                var tabela = "";
               
                tabela = tabela + "<center><table id='tableResultados'><tr><td>Local</td><td>Item</td><td>Data</td><td>Valor</td><td>Quantidade</td></tr>";
               
                $.each(result.objetoRetorno.listaHistoricoPreco, function (index, objeto) 
                {
                     tabela = tabela + "<tr><td>" +  objeto.nomeclaturaLocal.labelNomeclaturaLocal + "</td><td>"  + objeto.item.descItem + "</td><td>" +  objeto.dataCompraFormatada  + "</td><td>" + objeto.valor + "</td><td>" + objeto.quantidade + "<td></td></tr>";
                })

                tabela = tabela + "</table></center>";
                $("#divHistoricoPreco").html(tabela);
                
                
                  //Fins estatisticos
                var estatisticaHtmlAzul = '<br>Sua Média(Item): <b><font color=blue>' + result.objetoRetorno.mediaIndividual + '</b></font>';
                var estatisticaHtmlVermelho = '<br>Sua Média(Item): <b><font color=red>' + result.objetoRetorno.mediaIndividual + '</b></font>';
                
                var estatisticaHtml2 = '<br> Media Global(Item):' + result.objetoRetorno.mediaColetiva + "<br>";
                
                var htmlFinal = "";
                
                if(result.objetoRetorno.mediaIndividual <= result.objetoRetorno.mediaColetiva)
                {
                    htmlFinal = estatisticaHtmlAzul + estatisticaHtml2;
                }
                else
                {
                    htmlFinal = estatisticaHtmlVermelho + estatisticaHtml2;                    
                }
                
                 
                
                $("#divEstatísticaHistoricoPreco").html(htmlFinal);
                $('#divEstatísticaHistoricoPreco').show();
                
                
               
            }
            else 
            {
               alert(result.msgRetorno);
            }

        }


    });

}



function carregarCombo(urlRestArg,nomeComboArg)
{
   
   var labelExibicaoOptions = 
    {
        descNomeclaturaLocal: "objeto.labelNomeclaturaLocal",
        descItem: "objeto.descItem",
        descNomeclaturaLocal2: "objeto.labelNomeclaturaLocal",
        descItem2: "objeto.descItem",
        descTipoItem: "objeto.descTipoItem",
        
        idNomeclaturaLocal: "objeto.idNomeclaturaLocal",
        idItem: "objeto.idItem",
        idNomeclaturaLocal2: "objeto.idNomeclaturaLocal",
        idItem2: "objeto.idItem",
        idTipoItem: "objeto.idTipoItem"
        
    }; 

    var sessaoArg = localStorage.getItem('hiddenTokenAutenticacao');

    $.ajax({

        url:  obterURLPrincipal("/Consulta/" + urlRestArg),
        type: 'GET',
        data:
        {
            sessao:   sessaoArg
        },
        success: function (result) 
        {

            if (result.statusRetorno == "1") 
            {
                    
                    var contador = 0;
                    var combo = "<select id='" + nomeComboArg + "'> ";
                    
                             
                    $.each(result.objetoRetorno, function (index, objeto) {
                        
                        if (contador == 0) 
                        {
                            combo = combo + "<option value='" + eval(eval("labelExibicaoOptions.id" + nomeComboArg)) + "' selected>" + eval(eval("labelExibicaoOptions.desc" + nomeComboArg)) + "</option>";
                            contador++;
                        }
                        else 
                        {
                            combo = combo + "<option value='" + eval(eval("labelExibicaoOptions.id" + nomeComboArg)) + "'>" + eval(eval("labelExibicaoOptions.desc" + nomeComboArg)) + "</option>";
                            contador++;
                        }

                    })

                    combo = combo + "</select>";
                    
                    $("#div" + nomeComboArg).html(combo);
                    $("#div" + nomeComboArg).show();

            }
            else 
            {
               alert("Erro ao carregar o combo " + nomeComboArg + " pelo motivo: " + result.msgRetorno);
            }

        }


    });

}


function carregarComboItemTipoUnidade()
{
   
    var sessaoArg = localStorage.getItem('hiddenTokenAutenticacao');

    $.ajax({

        url:  obterURLPrincipal('/Consulta/ListarItensPorUsuario'),
        type: 'GET',
        data:
        {
            sessao:   sessaoArg
        },
        success: function (result) 
        {

            if (result.statusRetorno == "1") 
            {
                    
                    var contador = 0;
                    var combo = "<select id='Item'> ";
                    
                             
                    $.each(result.objetoRetorno, function (index, objeto) {
                        
                        if (contador == 0) 
                        {
                            combo = combo + "<option value='" + objeto.idItem + "' selected>" + objeto.descItem + "</option>";
                            contador++;
                        }
                        else 
                        {
                            combo = combo + "<option value='" + objeto.idItem + "' selected>" + objeto.descItem + "</option>";
                            contador++;
                        }

                    })

                    combo = combo + "</select>";
                    
                    $("#divItem").html(combo);
                    $("#divItem").show();
                    
                    $('#Item').change(carregarTipoUnidade);
                    carregarTipoUnidade();

            }
            else 
            {
               alert("Erro ao carregar o combo " + nomeComboArg + " pelo motivo: " + result.msgRetorno);
            }

        }


    });

}


function carregarTipoUnidade()
{
     
    var sessaoArg = localStorage.getItem('hiddenTokenAutenticacao');

    $.ajax({

        url:  obterURLPrincipal('/Consulta/ListarTipoUnidadeItem'),
        type: 'GET',
        data:
        {
            sessao:   sessaoArg,
            item  :   $('#Item').val()
        },
        success: function (result) 
        {

            if (result.statusRetorno == "1") 
            {
                $("#divTipoUnidade").hide();
                $('#divTipoUnidade').html(result.objetoRetorno.descTipoUnidade);
                $("#divTipoUnidade").show();
            }
            else
            {
                alert(result.msgRetorno);               
            }
        }
    });
 
    
}



function autenticarMudarContexto(contexto)
{
    autenticar($('#login').val(),$('#senha').val(),contexto); 
}

function autenticar(loginArg,senhaArg,funcaoAlvo)
{
    $.ajax({
        
        url:  obterURLPrincipal("/Autenticacao/Autenticar"),
        type: 'GET',
        data:{login:   loginArg, senha:   senhaArg},
        
        success: function (result) 
        {
            if (result.statusRetorno == "1") 
            {
                localStorage.setItem('hiddenTokenAutenticacao', 
                result.objetoRetorno.idSessao);
                window[funcaoAlvo]();              
            }
            else 
            {
               alert("Erro ao se autenticar para o login: " + loginArg);
            }
        }
        
    });
}


function logOut()
{
    var sessao = localStorage.getItem('hiddenTokenAutenticacao');
    
    $.ajax({
        
        url:  obterURLPrincipal("/Autenticacao/LogOut"),
        type: 'PUT',
        data:{ idSessao: sessao},
        
        success: function (result) 
        {
            if (result.statusRetorno == "1") 
            {
               alert("Logout-ed!!!"); 
            }
            else 
            {
               alert("Erro ao efetuar logout.");
            }
             
            voltarDivSessao('sessaoPainel','sessaoLogin');
        }
    
    });
    
    localStorage.removeItem('hiddenTokenAutenticacao'); 
 }


function verificarExisteLocal(funcaoAlvo)
{

    $.ajax({

        url:  obterURLPrincipal("/Consulta/VerificarLocal"),
        type: 'GET',
        data:
        {
            idSessao:   localStorage.getItem('hiddenTokenAutenticacao')
        },
        success: function (result) 
        {

            if (result.statusRetorno == "1") 
            {
               window[funcaoAlvo](); 
            }
            else 
            {
               alert("Por favor, cadastre primeiramente um local(ponto) de interesse(POI).");
            }

        }


    });

}




//Funções após autenticação para mudar o layout da aplicação principal.
function carregarSessaoLogin()
{
    var sessao = localStorage.getItem('hiddenTokenAutenticacao');
    
    if(sessao !== "undefined" && sessao != "" && sessao != null)
    {
      $('#sessaoPainel').show();
      $('#sessaoLogin').hide();
    }
    else
    {
      $('#sessaoLogin').show();
      $('#sessaoPainel').hide();
    }
    
}


function carregarSessaoPainel()
{
    $('#sessaoLogin').hide();
    $('#sessaoPainel').show(); 
}

function carregarSessaoGravarPreco()
{
       
    $('#sessaoPainel').hide();
    carregarComboItemTipoUnidade();
    carregarCombo("ListarLocalPorUsuario","NomeclaturaLocal");
    $('#sessaoGravarPreco').show();
 
}

function carregarSessaoGravarLocal()
{
    $('#sessaoPainel').hide();  
    $('#sessaoGravarLocal').show();
   
}

function carregarSessaoCadastrar()
{
    carregarCombo("ListarTiposItem","TipoItem");
    $('#sessaoCadastrar').show();
    
}

function carregarSessaoConsultarHistoricoPreco()
{
     $('#sessaoConsultarHistoricoPreco').show();
}

function carregarSessaoResultadoConsultaHistoricoPreco()
{
   carregarSessaoConsultaHistoricoPreco();
   $('#sessaoResultadoConsultaHistoricoPreco').show();
}


function voltarDivSessao(sessaoAtual,sessaoDestino)
{
    $('#' + sessaoAtual).hide();
    $('#' + sessaoDestino).show(); 
}





//Sessão da pagina consulta.html
function carregarSessaoConsultarHistoricoPrecoPorLocal()
{
    carregarCombo("ListarLocalPorUsuario","NomeclaturaLocal");
    
    $('#sessaoConsultarHistoricoPrecoPorLocal').show();
    $('#sessaoConsultarHistoricoPrecoPorLocalItem').hide();
    $('#sessaoConsultarHistoricoPrecoPorItem').hide();
   
    $('#sessaoResultadoConsultarHistoricoPreco').hide();
}

function carregarSessaoConsultarHistoricoPrecoPorLocalItem()
{
    carregarCombo("ListarLocalPorUsuario","NomeclaturaLocal2");
    carregarCombo("ListarItensPorUsuario","Item");
    
    $('#sessaoConsultarHistoricoPrecoPorLocal').hide();
    $('#sessaoConsultarHistoricoPrecoPorLocalItem').show();
    $('#sessaoConsultarHistoricoPrecoPorItem').hide();
    
    $('#sessaoResultadoConsultarHistoricoPreco').hide();
 
}

function carregarSessaoConsultarHistoricoPrecoPorItem()
{
    carregarCombo("ListarItensPorUsuario","Item2");
    
    $('#sessaoConsultarHistoricoPrecoPorLocal').hide();
    $('#sessaoConsultarHistoricoPrecoPorLocalItem').hide();
    $('#sessaoConsultarHistoricoPrecoPorItem').show(); 
    
    $('#sessaoResultadoConsultarHistoricoPreco').hide();
}





//Função que carrega mapas para funcionalidade de cadastrar NomeclaturaLocal do 
//usuário
function iniGeoMapaLocal() 
{
    
    
    //Treco inserido caso o usuário acesse o link de voltar na tela de consulta
    //Se o usuário já esta logado não há necessidade de mostrar a tela de login    
    var sessaoUsr = localStorage.getItem('hiddenTokenAutenticacao');
    
    //KEY=AIzaSyDt4oYtkPg-0gPUDFyDcXsCj4DfpsRh7BY
    var address = document.getElementById("descEnderecoNomeclaturaLocal").value;
        
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': address }, function (results, status) 
    {
        if (status == google.maps.GeocoderStatus.OK) 
        {
            var x = results[0].geometry.location.lat();
            var y = results[0].geometry.location.lng();

            //Armazenando no estado local caso seja necessário persistir 
            //a geolocalizacao para o endereco encontrado
            $('#hiddenLatitudeNomeclaturaLocal').val(x);
            $('#hiddenLongitudeNomeclaturaLocal').val(y); 

            //Opções de controle do mapa 
            var mapOptions = 
            {
               center: new google.maps.LatLng(x, y),
               zoom: 17,
               mapTypeId: google.maps.MapTypeId.ROADMAP  
            };

            //Inserindo marcador de acordo com as coordenadas.                       
            var map = new google.maps.Map(document.getElementById("map-canvas"),mapOptions);

            var marker=new google.maps.Marker({
             position:new google.maps.LatLng(x,y)
            });

            marker.setMap(map);
        } 
        else 
        {
            alert("Requisição falhou ao buscar localizacao através do endereço digitado.");
        }

     });
                 


}  

